/**
 * 继承BaseScene类的一个示例;
 */
import {global} from '../Main';
import {BaseScene} from 'BaseScene';
export class Demo3 extends BaseScene{
    // public advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI("UI");
    /**
     * 只需要实现此方法，将playground的代码粘贴到此方法即可;
     * @returns
     */
    public iniScene(){
        //注意添加这两行，以匹配playground里的代码
        var engine = global.engine;
        var canvas = global.canvas;
        var scene = this.scene;
        var THIS = this;
        
        // var camera = new BABYLON.ArcRotateCamera("arc1", -Math.PI / 4, Math.PI / 4, 40, BABYLON.Vector3.Zero(), scene);
        var camera = new BABYLON.UniversalCamera("camera", new BABYLON.Vector3(40,20,0), scene);
        camera.speed = 20;
        camera.inertia = 0;
        
        camera.attachControl(canvas, true);
        
        BABYLON.SceneLoader.ImportMesh("", "glb/", "scene_studio.babylon", scene, function (newMeshes) {
            // Set the target of the camera to the first imported mesh
            scene.createDefaultLight();

            camera.setTarget(scene.getMeshByID('book1.003').position);
            // //注意这里不能使用this，应该是此处的回调函数会产生this绑定歧义，因此自动禁用了
            // //解决方案可以在function后面调用.bind(this)，或者如下将this用其他变量表示
            // THIS.clickToRender3D(<BABYLON.Mesh>scene.getMeshByID('book1.003'),SCENE.Demo1, true);
            this.clickToRender3D(<BABYLON.Mesh>scene.getMeshByID('book1.003'),SCENE.Demo1, true);

            //电视机屏幕
            var telPlane = BABYLON.MeshBuilder.CreatePlane("screen", {height: 18, width: 32}, scene);
            telPlane.isPickable = false;
            telPlane.position = new BABYLON.Vector3(-58.9, 20, 0);
            telPlane.rotation = new BABYLON.Vector3(0, -Math.PI/2, 0);
            var advancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateForMesh(telPlane);
            var textBlock = new BABYLON.GUI.TextBlock();
            textBlock.text = "television";
            textBlock.fontSize = 64;
            textBlock.color = 'white';
            advancedTexture.addControl(textBlock);

            this.clickToDo(<BABYLON.Mesh>scene.getMeshByID('book1.001'), () => {
                textBlock.text += '\n你完成了任务：点击book1.001';
            });
            this.clickToDo(<BABYLON.Mesh>scene.getMeshByID('book1.002'), () => {
                textBlock.text += '\n你完成了任务：点击book1.002';
            });


        }.bind(this));
        
        



        ////此方法灯光有问题
        // BABYLON.SceneLoader.Append("glb/", "scene_studio.babylon", scene, (scene) => {
        //     scene.createDefaultLight();
        //      camera.setTarget(scene.getMeshByID('book1.003').position);
        //      this.clickToRender3D(<BABYLON.Mesh>scene.getMeshByID('book1.003'),SCENE.Demo1, true);
        //     }
        // );

        //使用sceneLoader加载外部模型
        // BABYLON.SceneLoader.Append("glb/", "scene_studio1.0.gltf", scene, (scene) => {
        //     scene.createDefaultLight();

        //     // this.clickToRender3D(<BABYLON.Mesh><unknown>scene.getMeshByID('book1.003'), SCENE.Demo1, true);
        //     // camera.setTarget(scene.getMeshByID('bookshelf').position);
        //     // {
        //     //     var i = false;
        //     //     var button = BABYLON.GUI.Button.CreateSimpleButton("button", "名字比较长的按钮");
        //     //     button.onPointerClickObservable.add((data, state) =>{
        //     //         i = !i;
        //     //         button1.isVisible = i;console.log(i);
        //     //     });
        //     //     this.advancedTexture.addControl(button);
        //     //     button.linkWithMesh(scene.getMeshByID('book1.001'));   
        //     //     button.width = "5%";
        //     //     button.height = "5%";
        //     //     button.linkOffsetX = 50;
                

        //     // }

        //     // {
        //     //     var button1 = BABYLON.GUI.Button.CreateSimpleButton("button", "名字比较长的按钮");
        //     //     button1.onPointerClickObservable.add((data, state) =>{
        //     //         alert("点击事件正在生效！");
        //     //         this.askForRender(SCENE.Demo1);
        //     //     });
        //     //     this.advancedTexture.addControl(button1);
        //     //     button1.linkWithMesh(scene.getMeshByID('book1.003'));   
        //     //     button1.width = "5%";
        //     //     button1.height = "5%";
        //     //     button1.linkOffsetX = 50;
        //     // }
        //     // //这里说明，加载后的场景实际位置与position不同
        //     // var box = BABYLON.MeshBuilder.CreateBox("a", {}, scene);
        //     // box.position = scene.getMeshByID('book1.003').position;
        //     // console.log(box.position);

        //     // var rect1 = new BABYLON.GUI.Rectangle();
        //     // rect1.width = 0.05;
        //     // rect1.height = "40px";
        //     // rect1.cornerRadius = 20;
        //     // rect1.color = "Orange";
        //     // rect1.thickness = 4;
        //     // rect1.background = "green";
        //     // this.advancedTexture.addControl(rect1);
        
        //     // var label = new BABYLON.GUI.TextBlock();
        //     // label.text = "Sphere";
        //     // rect1.addControl(label);rect1.isVisible = false;
        //     // rect1.onPointerDownObservable.add(() =>{
        //     //     this.askForRender(SCENE.Demo1);
        //     // });
        
        //     // rect1.linkWithMesh(scene.getMeshByID('book1.003'));   
        //     // rect1.linkOffsetX = 50;
        // });

        
    }

}
